[Amazon SageMaker]ノートブックインスタンスへのアクセスを特定のユーザーに制限する
コンニチハ、千葉です。
SageMakerを利用する場合、IAMユーザーによってアクセスするノートブックインスタンスを分けたいという場合があります。「IPアドレスでノートブックインスタンスへのアクセスを制限する」という方法が、公式ドキュメントにありますが、今回はIPアドレスではなく、特定のIAMユーザーならアクセスできるという制限を入れてみます。
やってみた
公式ドキュメントを参照すると、ノートブックインスタンスにアクセスする場合、CreatePresignedNotebookInstanceUrl
が呼ばれノートブックへのアクセス用のURLが発行されます。動作としては、マネージメントコンソールからノートブックにアクセスするリンクをクリックした時にコールされます。そのため、マネージメントコンソールにログインしているIAMユーザー(またはIAMグループ、IAMロール)のIAMポリシーに制限を追加します。
特定のノートブックへのアクセス
AWSへログインしたIAMユーザーに対して、特定の1つのノートブックのみにアクセスを限定します。 現在AWSへログインしているIAMユーザー、グループ、IAMロールのポリシーに以下を追加しましょう。指定したのノートブックのみにアクセスできます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "NotResource": "arn:aws:sagemaker:ap-northeast-1:1234567890:notebook-instance/chiba42" }, { "Effect": "Allow", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "arn:aws:sagemaker:ap-northeast-1:1234567890:notebook-instance/chiba42" } ] }
NotResource
、Resource
には、SageMakerノートブックインスタンスのARNを指定します。
特定のタグがついてるインスタンスへのアクセス
次は、進化版です。特定タグがついてるノートブックへアクセスできるようにしてみます。例えば5インスタンスあって、Aチームに自由に使ってもらうみたいなケースです。 これは、ノートブックに特定のタグがあったら利用できるみたいにします。
例えば、ノートブックインスタンスにkey: TeamName
、 Value: A
というタグをつけます。このタグを付けたインスタンスのみにアクセスできるIAMポリシーを考えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "*", "Condition": { "StringNotEquals": { "sagemaker:ResourceTag/TeamName": "A" } } }, { "Effect": "Allow", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/TeamName": "A" } } } ] }
こちらを、IAMユーザーにアタッチすると、タグに付いたノートブックのみしかアクセスできなくなります。
さいごに
SageMaker ノートブックインスタンスへのアクセス制限を、IAMベースでやってみました。アクセスを分離したい場合にお試しください!